// Copyright 2022 a.o.smith ALL Rights Reserved
package com.liuxinlong.modules.sync.service;

import com.liuxinlong.modules.material.dto.MaterialInfoDto;

import java.util.List;
import java.util.Map;

/**
 * 类描述
 * <p>
 * 此类关联设计的功能
 *
 * @author liuxinlong@hotwater.com.cn
 * @version 1.0.0
 * @since 2022年2月22日
 */
public interface SyncService {
    /**
     * 同步物料信息
     *
     * @param queryParam 查询参数
     * @return 物料信息
     */
    List<Map<String, Object>> syncMaterial(Map<String, Object> queryParam);

    /**
     * 物料计数
     *
     * @param queryParam 查询参数
     * @return 物料数量
     */
    int countMaterial(Map<String, Object> queryParam);

    /**
     * 查询单条物料
     *
     * @param materialNo 物料号
     * @param region     作用域
     * @return 单条物料详情
     */
    Map<String, Object> getOneMaterial(String materialNo, String region);

    /**
     * 查询单条物料
     *
     * @param materialNo 物料号
     * @param region     作用域
     * @return 单条物料详情
     */
    Map<String, Object> getOneSiteMaterial(String materialNo, String region);

    /**
     * 批量查询物料
     *
     * @param materialNoList 物料号
     * @param region         作用域
     * @return 物料详情
     */
    Map<String, Map<String, Object>> getMaterials(List<String> materialNoList, String region);

    /**
     * 批量查询子物料
     *
     * @param materialNoList 物料号
     * @param region         作用域
     * @return 子物料详情
     */
    List<MaterialInfoDto> getChildMaterials(List<String> materialNoList, String region, String startTime);

    /**
     * 获取物料信息
     *
     * @param keyword 查询关键字
     * @param region  物料所属域
     * @return 物料信息
     */
    List<Map<String, String>> asyncQueryMaterial(String keyword, String region);

    /**
     * 获取物料信息
     *
     * @param keyword 查询关键字
     * @param region  物料所属域
     * @return 物料信息
     */
    List<Map<String, String>> asyncQuerySiteMaterial(String keyword, String region);

    /**
     * 批量查询父物料
     *
     * @param materialNoList 物料号
     * @param region         作用域
     * @return 子物料详情
     */
    List<MaterialInfoDto> getParentMaterials(List<String> materialNoList, String region);

    /**
     * 获取物料信息
     *
     * @param materialNo 物料号
     * @return 物料信息
     */
    List<Map<String,Object>> getMaterialInfo(String materialNo);

    /**
     * 获取物料信息
     *
     * @param materialNo 物料号
     * @return 物料信息
     */
    List<Map<String,Object>> getPgsMaterialInfo(String materialNo);

    /**
     * 获取物料相关信息
     *
     * @param materialNo 物料号
     * @param region 物料所在域
     * @return 物料相关信息
     */
    Map<String,Object> getMaterialExpInfo(String materialNo,String region);

    /**
     * 获取带地点物料信息
     *
     * @param materialNo 物料号
     * @return 物料信息
     */
    List<Map<String,Object>> getPgsSiteMaterialInfo(String materialNo);
}
